有哪些常见的逻辑漏洞
常见的逻辑漏洞有以下这些:
注册覆盖漏洞:注册重复用户名对真实用户数据进行覆盖,对于注册页面覆盖注册是指原来用一个手机号已经注册了账号,但是由于漏洞,导致可以再利用该手机号进行注册,并且会将之前注册的记录覆盖。
注册遍历漏洞:进行注册的时候注册重复的用户名会提示用户名已被注册,利用该漏洞可以猜测用户名。
登陆认证绕过漏洞:一般登陆界面登陆成功后会进行跳转到主页面,但是如果没有对其进行校验的话,可以直接访问主页面绕过了登陆认证。登陆状态如果只以登陆状态码进行判断登陆成功标识,那么修改登陆状态码就能进行登录。
验证码漏洞:这种漏洞是因为没有对数据进行加密,导致验证码一般直接出现在html源码中或者隐藏在Cookie中,如果是图形验证码则是因为没有对图片进行模糊处理导致可以利用脚本直接识别,还有少部分验证码只要网页不刷新验证码就能重复被利用,这些情况都可以导致用户信息泄露或者服务器失控。
短信验证码漏洞:如果服务端未对短信验证码的验证时间或者次数进行限制,那么我们就可以利用其进行爆破。一般来说短信验证码仅能供自己使用一次,如果验证码和手机号未绑定也会导致这种漏洞的产生。
越权修改密码:有时候开发再写代码时,会直接用到某一参数直接调取该参数对应的数据,而再调用时并不考虑当前登陆用户是否有权限调用。这就导致了,可以利用抓该包工具,将传递给后台的数据进行修改,修改后可以查看原本自己没有权限看到内容。
解决web应用出现逻辑漏洞的方法有以下这些:
确保将应用程序各方面的设计信息清楚、详细地记录在文档中,以方便其他人了解设计者做出的每个假设。同时将所有这些假设明确记录在设计文档中。
要求所有源代码提供清楚的注释,并经过代码审计;
在以安全为中心的应用程序设计审核中,考虑在设计过程中做出的每一个假设,并想象假设被违背的每种情况。尤其应注意任何应用程序用户可完全控制的假定条件。
在以安全为中心的代码审查中,从各个角度考虑以下两个因素,一是应用程序如何处理用户的反常行为和输入,二是不同代码组件与应用程序功能之间的相互依赖和互操作可能造成的不利影响。